With the accelerating growth of Internet and intranet communication, high-bandwidth applications (such as streaming video), and large information databases, the need for networked storage systems has increased dramatically. System performance, data protection, and cost have been some of the main concerns in designing networked storage systems. In the past, many systems have used fibre channel drives because of their speed and reliability. However, fibre channel drives are very costly. Integrated drive electronics (IDE) drives are much cheaper in terms of dollars-per-gigabyte of storage; however, their reliability is inferior to that of fibre channel drives. Furthermore, IDE drives require cumbersome 40-pin cable connections and are not easily replaceable when a drive fails. Serial advanced technology attachment (SATA) drives that use the same receptor as their fibre channel counterparts are now available. These drives, therefore, have the speed required for acceptable system performance and are hot-swappable, meaning that failed drives are easily replaced with new ones. Furthermore, they provide more storage than do fibre channel drives and at a much lower cost. However, SATA drives do not offer the same reliability as do fibre channel drives. Thus, there is an industry push to develop high-capacity storage devices that are low cost and extremely reliable.
To improve data reliability, many computer systems implement a RAID system, which is a disk system that includes a collection of multiple disk drives that are organized into a disk array and managed by a common array controller. The array controller presents the array to the user as one or more virtual disks. Disk arrays are the framework to which RAID functionality is added in functional levels in order to produce cost-effective, highly available, high-performance disk systems.
In RAID systems, the data is distributed over multiple disk drives to allow parallel operation, and thereby enhance disk access performance, and to provide fault tolerance against drive failures. Currently, a variety of RAID levels from RAID level 0 through RAID level 6 have been specified in the industry. RAID levels 1 through 5 provide a single drive fault tolerance. That is, these RAID levels allow reconstruction of the original data, if any one of the disk drives fails. It is quite possible, however, that more than one SATA drive may fail in a RAID system. For example, dual drive failures are becoming more common, as RAID systems incorporate an increasing number of less expensive disk drives.
To provide, in part, a dual-fault tolerance to such failures, the industry has specified a RAID level 6. The RAID 6 architecture is similar to RAID 5, but RAID 6 can allocating operations that require access to the parity engines or cache memories. By providing multiple parity engines and cache memories, error correction syndrome values can be calculated in parallel. The performance of the controller can be selectively scaled by providing a greater or lesser number of parity engines and associated cache memories. Furthermore, by use of a switched fabric internal architecture, data transfers between the internal components of the controller can be conducted simultaneously.
The '098 patent provides a RAID controller that is scalable, based on performance and cost requirements. Although this provides flexibility to the customer, such that the RAID controller is somewhat customizable, it does not provide instant or continuous flexibility, because additional hardware must be physically installed or uninstalled to change the RAID controller configuration. Hence, a method of performing parity calculations that is independent of RAID 6 hardware architecture and algorithms is still needed.
It is therefore an object of the invention to provide an improved method of calculating XOR operations for any type of RAID 6 algorithm.
It is another object of this invention to provide an improved method of calculating XOR operations for any type of RAID 6 algorithm that is independent of the hardware architecture.